'''小蓝发现了一个有趣的数列，这个数列的前几项如下:
1,1,2,1,2,3,1,2,3,4,.….
小蓝发现，这个数列前1项是整数1，接下来2项是整数1至2，接下来3项是整数1至3，接下来4项是整数1至4，依次类推。
小蓝想知道，这个数列中，连续—段的和是多少。
输入描述
输入的第一行包含—个整数T，表示询问的个数。
接下来T行，每行包含—组询问，其中第i行包含两个整数l和ri，表示询问数列中第l个数到第r个数的和。
输出描述
输出T行，每行包含一个整数表示对应询问的答案。'''

# 代码；
import math

# 求1-N的和
def getSum(n):
    return (n*n+n)//2

# 求前N个数列 [1] , [1,2] , [1,2,3] , [1,2,3,4], ... , [1,2,3,...,N] 的所有数字之和 即对(n^2+n)/2求和
def getSum2(n):
    return (n**3 + 3 * n*n + 2 * n) // 6


# 利用递归求解1^2 + ... + n^2
def calculateSumSquare(n):
    if n == 0:
        return 0
    if n == 1:
        return 1
    return calculateSumSquare(n-1) + n**2

# 计算(n^2+n)/2求和。功能同getSum2(n)函数
def calculateSum2(n):
    sum = (1+n)*n/2
    sumSquare = calculateSumSquare(n)
    return int((sum + sumSquare)/2)

# 求第N个数在123数列中第几个数列的第几个 求解二次方程 (x^2+x)/2<=N
def findPosition(n):
    if n == 0:
        return (0, 0)
    m = math.floor((math.sqrt(8*n + 1)-1) / 2)
    c = (m*m+m) // 2
    if n == c:
        return (m, m)
    else:
        return (m + 1, n - c )

T = int(input())

# 策略是前N项数字和减去前M-1项数字的和
for i in range(T):
    [M, N] = list(map(int, input().split()))
    (M1, M2) = findPosition(M-1)  # 计算得到第M-1个数字在第M1个数列的第M2项
    (N1, N2) = findPosition(N)    # 计算得到第N个数字在第N1个数列的第N2项
    print(getSum2(N1-1) + getSum(N2) - getSum2(M1-1) - getSum(M2))